// PROGRAMA : IDCPM001
// BIBLIOTECA : PRODETR
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : SEJUSP - SEC. DA JUSTICA E SEGURANCA PUBLICA
// INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : EDU/FM DATA: 11/06/92
// OBJETIVO : MENU DO MODULO DE IDENTIFICACAO CIVIL
// ATUALIZACOES DATA
// PROGRAMA : IDCPM001 23/05/1999
// BIBLIOTECA : SISP
// PROGRAMADOR :
// OBJETIVO : ADAPTACAO PARA O SHOPPING DO CIDADAO (P200)
// MENU GERAL EM 12/01/1998
// 'AIC'ID.CIVIL, 'ACI'CANCELA DOCUMENTO,'AID' CANCELA INTERVALO,
// 'EAA'EMITE ATESTADO,'EBC'EMITE BOLETIM,
// 'ATA'TABELA DE APOIO,'ATS'TABELA DE SENHA, 'BIC' BAIXA DOCUMENTO
// : MODIFICACAO DA TELA IDCTM001 EM 27/08/1999
// : INCLUSAO DO SHOPCID JOAO PAULO EM 28/04/2000
// : INCLUSAO DO SHOPCID IMPERATRIZ EM 18/08/2000
// OBS : USER-ID: IDCAG001 ATE IDCAG004 (PARA ACAO GLOBAL)
// OBS1 : ESTE PROGRAMA FOI REESTRUTURADO POR SOLON MIRANDA
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idctm001;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislm001;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpm001 OBJETIVO : MENU DO MODULO DE IDENTIFICACAO CIVIL *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/idcpm001")
public class Idcpm001 {
	// Views utilizadas
	SicTabelas vwTabele = new SicTabelas();
	// Telas/relatorios utilizados
	Idctm001 idctm001;
	// Includes utilizados
	Sislm001 sislm001 = new Sislm001();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Idcpm001 idcpm001Anterior;
	String faseproc = "0";

	private String jUser = UtilBean.getInitUser();
	private String tabDescel = "";
	private String chaveAlfa = "";
	private String mensagemInicial = "";

	private Idctm001 preMapas() {
		idctm001 = new Idctm001(true, sessao);
		idctm001.setNomeClasse(this.getClass().getSimpleName().toUpperCase());
		// SETA PF'S
		idctm001.setDataCorrente(UtilBean.obtemDataDia());
		// dao.rollback();

		// MONTA CALENDARIO DO MES
		funcoes.sisnc001();
		idctm001.setMes(funcoes.mes);
		idctm001.setMesa(funcoes.dataL);
		return idctm001;
	}

	public Idcpm001(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idctm001 idctm001) {
		try {
			main(idctm001);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idctm001 pidctm001) {
		if (pidctm001 == null) {
			primeiraVez = true;
			idctm001 = preMapas();
			idctm001.setNavegar("../idcpm001/executar");
			idctm001.setMensagem(mensagemInicial);
			result.include("idctm001", idctm001);
			sessao.setAtributo("IDCPM001", this);
			idctm001.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidctm001);
		}

		// ATUALIZAR A TABELA DE USER-ID A CADA NOVO USUARIO
		// TABELA DE USER-ID E POSTO
		if (vwTabele.consultaTabcha(888, jUser)) {
			tabDescel = vwTabele.getDescricaoElem();
			idctm001.setP200(UtilBean.subStr(tabDescel, 0, 30));
			idctm001.setCab01(UtilBean.subStr(tabDescel, 30, 30));
		}
		vwTabele.fecha();
		if (vwTabele.registrosProcessados() == 0) {
			idctm001.setMensagem("USUARIO NAO AUTORIZADO PARA USAR O SISP:" + UtilBean.subStr(chaveAlfa, 3, 14));
			idctm001.setMensagem(idctm001.getMensagem() + "<br>=> FAVOR ENTRAR EM CONTATO COM O ANALISTA DO SISTEMA SISP");
			idctm001.setMensagem(idctm001.getMensagem() + "<br>ANALISTA DO SISP: SOLON ");
			idctm001.setMensagem(idctm001.getMensagem() + "<br>TEL:(098)227-5772 / 227-5578 / 227-5599 / 9974-8432");
			result.include("idctm001", idctm001);
			sessao.setAtributo("IDCPM001", this);
			idctm001.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		idctm001.setMensagem("");
		// idctm001.setOperacao("");
		sislm001.l = 0;
		sessao.getSisgsisp().setVar(13);
		sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 0, 2, "N", 13);
		sessao.getSisgsisp().setVlt(13);

		idctm001.receberTela(false, result);
		// TELA MENU PRINCIPAL
		if (idctm001.getOperacao().equals("CAD") || UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Sispm001 sispm001 = new Sispm001(result, sessao);
			sispm001.executar(null, null, null);
			return;
		}
		// MENU DOS MODULOS
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Sispm001 sispm001 = new Sispm001(result, sessao);
			sispm001.executar(null, null, null);
			return;
		}
		if (idctm001.getOperacao().trim().equals("")) {
			switch (idctm001.getCamtela()) {
			case 11: {

				// idcpm001C.enviarReceberTela(false, result);
				// IDCPM001
				sislm001.l = 4;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "E");
				monta();
				return;
			}
			case 13: {

				// idcpm001C.enviarReceberTela(false, result);
				// IDCPM001
				sislm001.l = 3;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "C");
				monta();
				return;
			}
			case 15: {

				// idcpm001C.enviarReceberTela(false, result);
				// IDCPM001
				sislm001.l = 4;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "A");
				monta();
				break;
			}
			case 17: {

				// idcpm001C.enviarReceberTela(false, result);
				// IDCPM001
				sislm001.l = 2;
				sislm001.mdfuop = UtilBean.moveSubstring(sislm001.mdfuop, 2, 1, "A", "S");
				monta();
				return;
			}
			default: {
				break;
			}
			}
			// for (int i1 = 1; i1 <= 0; i1++) {
			// for (int i2 = 1; i2 <= 0; i1++) {
			sislm001.op0 = "";
			// }
			// }
			// for (int i1 = 1; i1 <= 0; i1++) {
			// for (int i2 = 1; i2 <= 0; i1++) {
			sislm001.de0 = "";
			// }
			// }
		} else {
			funcoes.sissm001(result, sessao);
		}
		sessao.setAtributo("IDCPM001", this);
		result.include("idctm001", idctm001);
		if (!result.used()) {
			idctm001.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	} // CHAMA PROGRAMA DE ACORDO COM OPERACAO

	private void monta() {
		Sissm002 sissm002 = new Sissm002(result, sessao);
		sissm002.mdfuo1 = sislm001.mdfuop;
		sissm002.z = sislm001.l;
		sissm002.voltar = "br.com.vti.sisp.controller.programa.Idcpm001";
		sissm002.executar(null, null);
	} // SISCERRO}}} //UtilBean.mensagemTexto("!  ERROR NUMERO:" *ERROR-NR
		// "    LINHA:" *ERROR-LINE " PROGRAMA:" idctm001.getNomeClasse() "!");

	private void restaurarEstados(Idctm001 pidctm001) {
		this.idcpm001Anterior = (Idcpm001) sessao.getAtributo("IDCPM001");
		if (pidctm001 != null) {
			idctm001 = pidctm001;
			idctm001.setEmpresa(sessao.getSisgsisp().getEmpresa());
			idctm001.setVersao(sessao.getSisgsisp().getVersao());
		} else {
			idctm001 = this.idcpm001Anterior.idctm001;
		}
		idctm001.setSessao(sessao);

		// MONTA CALENDARIO DO MES
		funcoes.sisnc001();
		idctm001.setMes(funcoes.mes);
		idctm001.setMesa(funcoes.dataL);
		this.faseproc = this.idcpm001Anterior.faseproc;
	}

	protected void setMensagem(String mensagem) {
		mensagemInicial = mensagem;
	}
}
